package cn.xinfei.xdecision.common.model.datax.datamanage.v2;

import cn.xinfei.xdecision.common.model.common.BasePage;
import cn.xinfei.xdecision.common.model.datax.datamanage.FieldCond;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Set;


@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_variable")
public class Variable implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     * */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 变量英文名
     * */
    private String varCode;

    /**
     * 变量中文名
     * */
    private String varName;


    /**
     * 变量存值类型
     * 变量存值类型,待选(0),integer(1),string(2),boolean(3),double(4)
     * */
    @TableField("value_type")
    private Integer varValueType;


    /**
     * 是否输入变量
     * */
    private Integer isInput;


    /**
     * 是否输出变量
     * */
    private Integer isOutput;

    /**
     * 是否过程变量
     */
    private Integer isInner;

    /**
     * 是否组织定义的通用变量
     * */
    private Integer isCommon;

    private String constValue;

    /**
     * 数据源id
     * */
    private Long dataSourceId;

    /**
     * 是否使用接口,sql,衍生变量  sql:3,interface:2,derive:1,other:0
     * */
    private Integer isUseType;

    /**
     * 接口id
     */
    private Long interfaceId;

    /**
     * 接口解析变量
     */
    private String interfaceParseVar;

    /**
     * json类型对应的json值
     */
//    private String jsonValue;
    /**
     * 字典变量例如 日期：date
     */
    private String dictVariable;

    /**
     * 变量的类型：(默认)1.基础变量 2.常变量，3.sql变量，4.衍生变量，5.接口变量
     */
    private Integer varType;

    /**
     * 变量默认值
     */
    private String varDefaultValue;

    /**
     * 变量描述
     */
    private String varDesc;

    /**
     * 变量状态
     */
    private Integer status;
    
    /**
     * 该变量归属的组织编号
     * */
    private Long organId;

    /**
     *  所属目录ID
     */
    private Long folderId;

    /**
     * 是否删除
     */
    private String isDeleted;

    @TableField(exist = false)
    private Integer userId;


    @TableField(exist = false)
    private Set<String> parameterVariables;
    @TableField(exist = false)
    private String scriptContent;

    /**
     * 创建人
     * */
    private String creator;

    /**
     * 修改人
     */
    private String modifier;


    /**
     * 创建时间
     * */
    private Date createTime;

    /**
     * 更新时间
     * */
    private Date updateTime;

    @TableField(exist = false)
    private String sourceType;
    @TableField(exist = false)
    private String inputParam;
    @TableField(exist = false)
    private String provider;
    @TableField(exist = false)
    private String api;


}
